From c9b9e20395a707aaca72c26d574e9151a0bff0a3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Jun 2011 17:37:12 +0100 Subject: [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Just assume disk as not removable when no 'removable' paremeter Signed-off-by: Marek Marczykowski Acked-by: Stefano Stabellini Signed-off-by: Ian Jackson Committed-by: Ian Jackson --- tools/libxl/libxl.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 2d61e0b7bb..abba45ee68 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1571,6 +1571,7 @@ static unsigned int libxl__append_disk_list_of_type(libxl__gc *gc, libxl__xs_get_dompath(gc, 0), type, domid); dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n); if (dir) { + char *removable; *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n)); pdisk = *disks + *ndisks; *ndisks += n; @@ -1588,7 +1589,12 @@ static unsigned int libxl__append_disk_list_of_type(libxl__gc *gc, libxl__sprintf(gc, "%s/%s/type", be_path, *dir)), &(pdisk->backend)); pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len); - pdisk->removable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir))); + removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf + (gc, "%s/%s/removable", be_path, *dir)); + if (removable) + pdisk->removable = atoi(removable); + else + pdisk->removable = 0; if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w")) pdisk->readwrite = 1; else -- 2.30.2